/**
 * @description: 数据mock
 * @author: 刘晓志
 * @update: 刘晓志(2021-01-18)
 */
/** 常用mockjs方法
  * Mock.mock({"string|3-5": "★★★"})      =>    {"string": "★★★★★★★★★"}
  * Mock.mock({"number|+1": 202})         =>    {"number": 201}
  * Mock.mock({"number|1-100": 100})      =>    {"number": 14}
  * Mock.mock({"object|2-4": {"110000": "北京市","120000": "天津市","130000": "河北省","140000": "山西省"}})      =>    {"object": {"120000": "天津市","130000": "河北省","140000": "山西省"}}
  *
  * id： Random.guid()  Random.id()
  * 时间：Random.now("yyyy-MM-dd HH:mm:ss SS")  Random.date("yyyy-MM-dd")   Random.time()   Random.datetime()   Random.now('day', 'yyyy-MM-dd HH:mm:ss SS')
  * 从中抽取： Random.pick(["a", "e", "i", "o", "u"])
  * 整数： Random.integer(60, 100)
  * 浮点数： Random.float(60, 100)
  * 按照指定间隔取数字，组成一个数组： Random.range(start?, stop, step?)    =》 [0,1,2,3,4,5,6,7,8,9]
  * 图片： Random.image("200x100", "#894FC4", "#FFF", "png", "!")
  * 颜色： Random.color()  Random.hex()   Random.rgba()    Random.hsl()
  * 标题： Random.ctitle()
  * 英文名称： Random.name()
  * 中文名称： Random.cname()
  * 中文长文字：Random.cparagraph()
  * 英文长文字：Random.paragraph()
  * 中文字三到五个： Random.cword('零一二三四五六七八九十', 3, 5)
  * 省份： Random.province()
  * 城市： Random.city()
  * 国家： Random.county()
  * 字符： Random.character()
  * url:  Random.url()
  * email: Random.email()
  * ip: Random.ip()
  * 区域： Random.region()
  * 按step值不断累加： Random.increment( step? )

  * 正则取值
  * Mock.mock({
  *  regexp: /[a-z][A-Z][0-9]/
  * })
  */

import Mock from 'mockjs'

console.info(`
/*******************************************/
    mock服务已启动
/*******************************************/
`)
// 加载./module文件夹下所有的js
const modules = require.context('./modules', true, /.js$/)
const modulesObj = modules.keys().reduce((obj, key) => {
	return Object.assign(obj, modules(key).default)
}, {})

// 遍历调用mock方法
Object.keys(modulesObj).forEach(key => {
	const { url, data, method, otherData } = modulesObj[key]
	Mock.mock(
		new RegExp(url + '(\\?|$)'),
		method,
		typeof data === 'function'
			? options => ({
					code: '00000',
					msg: '执行成功',
					data: data(options),
					...otherData
			  })
			: {
					code: '00000',
					msg: '执行成功',
					data,
					...otherData
			  }
	)
})
